home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 1999 June / maximum-cd-1999-06.iso / Fireworks 2 / data1.cab / Program_Files / Settings / HTML_Code / Dreamweaver2 / slices.htt < prev   
Encoding:
Text File  |  1999-03-01  |  30.6 KB  |  991 lines

  1. // Fireworks Dreamweaver 2.0 HTML & JavaScript for sliced output.
  2. // Version 2.0 10FEB99
  3.  
  4.  
  5. // To export HTML without comments change the value of variable doComments to "false".
  6. var doComments = true;
  7.  
  8. // When doComments is set to "true" the WRITE_HTML_COMMENT and WRITE_JS_COMMENT functions
  9. // include HTML and JavaScript comments in the exported file.
  10. function WRITE_HTML_COMMENT(str) {
  11.     if (doComments) WRITE_HTML("<!--"+str+"-->\n");
  12. }
  13.  
  14. function WRITE_JS_COMMENT(str) {
  15.     if (doComments) WRITE_HTML("/* "+str+" */\n");
  16. }
  17.  
  18. // Declare variables for processing Behaviors.    
  19. var hasGroup = false;
  20. var hasDownGroup = false;
  21. var hasSwap = false;
  22. var hasStatusMessage = false;
  23. var useCookie = true;
  24.  
  25. var onLoadPreloads = "";
  26.  
  27. // Write general comments for copying and pasting Fireworks-generated code into existing HTML documents.
  28. WRITE_HTML_COMMENT("To put this html into an existing HTML document, you must copy the JavaScript and");
  29. WRITE_HTML_COMMENT("paste it in a specific location within the destination HTML document. You must then copy");
  30. WRITE_HTML_COMMENT("and paste the table in a different location.");
  31. WRITE_HTML("\n");
  32.  
  33. WRITE_HTML("<html>\n");
  34. WRITE_HTML("\n");
  35.  
  36. WRITE_HTML("<head>\n");
  37. WRITE_HTML("\n");
  38.  
  39. // Use Base Name from export dialog as document title.
  40. WRITE_HTML("<title>", exportDoc.filename, "</title>\n");
  41. WRITE_HTML("\n");
  42.  
  43. // Write Meta tags.
  44. WRITE_HTML("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=");
  45. var charSet = App.getPref("HtmlCharSet");
  46. if (charSet == "") charSet = "iso-8859-1";
  47. WRITE_HTML(charSet + "\">\n"); 
  48. WRITE_HTML("<meta name=\"description\" content=\"Fireworks Splice HTML\">\n");
  49. WRITE_HTML("\n");
  50.  
  51. // Write HTML target and date created.
  52. var d = new Date();
  53. WRITE_HTML("<!-- Fireworks 2.0  Dreamweaver 2.0 target.  Created ", d, " -->\n");
  54. WRITE_HTML("\n");
  55.  
  56. var curIdCounter = d.getTime();
  57.  
  58.     // Function SwapName generates a swap id based on the current time.
  59.     function SwapName(i) {
  60.         var name = "#" + Math.floor(i);
  61.         return(name);
  62.     }
  63.  
  64. // Declare variables for processing Behaviors.    
  65. var kActionStatusMessage = 1;
  66. var kActionSwapImage = 2;
  67. var kActionRadioGroup = 3;
  68.  
  69. var kEventMouseOver = 0;
  70. var kEventOnClick = 1;
  71. var kEventMouseOut = 2;
  72.  
  73. function CellName(row, col) {
  74.     var cellName = "N" + exportDoc.imagename + "_" + (row+1) + "_" + (col+1);
  75.     var curSlice = slices[row][col];
  76.     if (curSlice && curSlice.getFrameFileName(0)) {
  77.         cellName = curSlice.getFrameFileName(0).toString();
  78.         curSlice.setFrameFileName(0, cellName);
  79.         // remove illegal characters
  80.         cellName = cellName.replace(/\W/g, "");
  81.         // if it starts with a number, add N to the front.
  82.         if (cellName == "") cellName = "N" + exportDoc.imagename + "_" + (row+1) + "_" + (col+1);
  83.         if (cellName.search(/\d/) == 0) {
  84.             cellName = "N"+cellName;
  85.         }
  86.     }
  87.     return(cellName);
  88. }
  89.  
  90. // Determine and process Behaviors in the document.
  91. function ProcessBehavior(theCurBehaviors, theObj) {
  92.  
  93. // Declare variables for processing behaviors.
  94.     var gotJavascript = false;
  95.  
  96.     var overStat = false;
  97.     var hitStat = false;
  98.     var outStat = false;
  99.     var curRestore = false;
  100.     var numRestore = 0;
  101.     var eraseStatOnRestore = false;
  102.  
  103.     var javaOver = "";
  104.     var javaOut = "";
  105.     var javaClick = "";
  106.  
  107.     var groupName = false;
  108.     
  109.     // Determine if this set of Behaviors includes a toggle group name.
  110.     for (var i=0; i<theCurBehaviors.numberOfBehaviors; i++) {
  111.         var curBehavior = theCurBehaviors[i];
  112.         if (curBehavior.action == kActionRadioGroup) {
  113.             groupName = curBehavior.groupName;
  114.         }
  115.     }
  116.     var swapImageOver = "";
  117.     var swapImageClick = "";
  118.     var swapImageOut = "";
  119.  
  120.     var precacheImageOver = "";
  121.     var precacheImageClick = "";
  122.     var precacheImageOut = "";
  123.  
  124.     // Translate behaviors into javascript.
  125.     for (var i=0; i<theCurBehaviors.numberOfBehaviors; i++) {
  126.         var curBehavior = theCurBehaviors[i];
  127.         var curJavascript = "";
  128.         var curSwap = "";
  129.         var curPrecache = "";
  130.         
  131.         // Translate Swap Image Behaviors into JavaScript.
  132.         if (curBehavior.action == kActionSwapImage) {
  133.             gotJavascript = true;
  134.             curRestore = curBehavior.restoreOnMouseout;
  135.             var swapRow = curBehavior.targetRowNum;
  136.             var swapCol = curBehavior.targetColumnNum;
  137.             var swapFrame = curBehavior.targetFrameNum; 
  138.             var fileName;
  139.             if (curBehavior.hasHref) {
  140.                 fileName = curBehavior.href;
  141.             } else {
  142.                 fileName = slices.imagesDirPath + slices[swapRow][swapCol].getFrameFileName(swapFrame) + slices[swapRow][swapCol].imageSuffix;
  143.             }
  144.             
  145.             var cellName = CellName(swapRow,swapCol);
  146.  
  147.             // If image swaps are part of a toggel group process the image swaps.
  148.             if (groupName) {
  149.                 curSwap += "'" +cellName +"','";
  150.                 curSwap += fileName +"'";
  151.                 if (curBehavior.event == kEventOnClick) {
  152.                     /* Need click file */
  153.                     if (slices[swapRow][swapCol].getFrameFileName(3) && swapFrame == 2) {
  154.                         fileName = slices.imagesDirPath + slices[swapRow][swapCol].getFrameFileName(3) + slices[swapRow][swapCol].imageSuffix;
  155.                     }
  156.                     curSwap += ",'" + fileName + "'";
  157.                 }
  158.  
  159.             // Process image swaps that are not included in a toggle group. 
  160.             } else {
  161.                 curSwap += "'document." +cellName +"','document." + cellName + "','";
  162.                 curSwap += fileName + "'"
  163.             }
  164.             
  165.             // Remember images for precaching.
  166.             if (curPrecache) curPrecache += ",";
  167.             curPrecache += "'" + fileName + "'";
  168.             if (curRestore) {
  169.                 numRestore += 1;
  170.             }
  171.         }
  172.         var gotStat = false;
  173.         
  174.         // Translate Status Bar Message Behavior into JavaScript.
  175.         if (curBehavior.action == kActionStatusMessage) {
  176.             gotJavascript = true;
  177.             gotStat = true;
  178.             var statMsg = curBehavior.statusText;
  179.             curJavascript += "MM_displayStatusMsg('" + statMsg + "');";
  180.             if (curBehavior.restoreOnMouseout) eraseStatOnRestore=true;
  181.         }
  182.         
  183.         // Generate JavaScript for over event.
  184.         if (curBehavior.event == kEventMouseOver) {
  185.             if (curSwap) {
  186.                 if (swapImageOver) swapImageOver += ",";
  187.                 swapImageOver += curSwap;
  188.                 if (precacheImageOver) precacheImageOver+=",";
  189.                 precacheImageOver += curPrecache;
  190.             }
  191.             javaOver += curJavascript;
  192.             if (gotStat) overStat = true;
  193.         }
  194.  
  195.         // Generate JavaScript for out event.
  196.         if (curBehavior.event == kEventMouseOut) {
  197.             if (curSwap) {
  198.                 if (swapImageOut) swapImageOut += ",";
  199.                 swapImageOut += curSwap;
  200.                 if (precacheImageOut) precacheImageOut+=",";
  201.                 precacheImageOut += curPrecache;
  202.             }
  203.             javaOut += curJavascript;
  204.             if (gotStat) outStat = true;
  205.         }
  206.         
  207.         // Generate JavaScript for onClick event.
  208.         if (curBehavior.event == kEventOnClick) {
  209.             if (curSwap) {
  210.                 if (swapImageClick) swapImageClick += ",";
  211.                 swapImageClick += curSwap;
  212.                 if (precacheImageClick) precacheImageClick+=",";
  213.                 precacheImageClick += curPrecache;
  214.             }
  215.             javaClick += curJavascript;
  216.             if (gotStat) hitStat = true;
  217.         }
  218.     }
  219.  
  220.     if (groupName) {
  221.         
  222.         // Generate toggle group JavaScript and preloads.
  223.         if (swapImageOver) {
  224.             tag = ",'" + SwapName(curIdCounter) + "');"; curIdCounter++;
  225.             javaOver += "GrpSwap('" + groupName + "'," + swapImageOver + tag;
  226.             onLoadPreloads += "MM_preloadImages(" + precacheImageOver + tag;
  227.             hasGroup = true;
  228.         }    
  229.         if (swapImageClick) {
  230.             tag = ",'" + SwapName(curIdCounter) + "');"; curIdCounter++;
  231.             javaClick += "GrpDown('" + groupName + "'," + swapImageClick + tag;
  232.             onLoadPreloads += "MM_preloadImages(" + precacheImageClick + tag; 
  233.             hasDownGroup = true;
  234.         }    
  235.         if (swapImageOut) {
  236.             tag = ",'" + SwapName(curIdCounter) + "');"; curIdCounter++;
  237.             javaOut += "GrpSwap('" + groupName + "'," + swapImageOut + tag;
  238.             onLoadPreloads += "MM_preloadImages(" + precacheImageOut + tag;
  239.             hasGrou = true;
  240.         }
  241.         if (numRestore >= 1) {
  242.             javaOut += "GrpRestore('" + groupName + "');" ;
  243.         }    
  244.     } else {
  245.         
  246.         // Generate swap image javascripts and preloads.
  247.         if (swapImageOver) {
  248.             tag = ",'" + SwapName(curIdCounter) + "');"; curIdCounter++;
  249.             javaOver += "MM_swapImage(" + swapImageOver + tag;
  250.             onLoadPreloads += "MM_preloadImages(" + precacheImageOver + tag;
  251.             hasSwap = true;
  252.         }    
  253.         if (swapImageClick) {
  254.             tag = ",'" + SwapName(curIdCounter) + "');"; curIdCounter++;
  255.             javaClick += "MM_swapImage(" + swapImageClick + tag;
  256.             onLoadPreloads += "MM_preloadImages(" + precacheImageClick + tag;
  257.             hasSwap = true;
  258.         }    
  259.         if (swapImageOut) {
  260.             tag = ",'" + SwapName(curIdCounter) + "');"; curIdCounter++;
  261.             javaOut += "MM_swapImage(" + swapImageOut + tag;
  262.             onLoadPreloads += "MM_preloadImages(" + precacheImageOut + tag;
  263.             hasSwap = true;
  264.         }
  265.         if (numRestore >= 1) {
  266.             javaOut += "MM_swapImgRestore();";
  267.             numRestore = 0;
  268.         }
  269.     }
  270.     
  271.     // Erase status bar message onMouseOut.
  272.     if (eraseStatOnRestore) {
  273.         javaOut += "MM_displayStatusMsg(' ');" ;
  274.         outStat = true;
  275.     }
  276.     
  277.     // Status bar messages require a return value in Netscape. 
  278.     // Put return at end of JavaScript.
  279.     var ret = "return document.MM_returnValue";
  280.     if (overStat) javaOver += ret;
  281.     if (outStat) javaOut += ret;
  282.     if (hitStat) javaClick += ret;
  283.     theObj.javaOver = javaOver;
  284.     theObj.javaOut = javaOut;
  285.     theObj.javaClick = javaClick;
  286.     theObj.gotJavascript = gotJavascript;
  287. }
  288.  
  289.     // Build a list of toggle groups in array groups.
  290.     var groups = new Array;
  291.     function AddGroup(name) {
  292.         var i;
  293.         for (i=0; i<groups.length; i++) {
  294.             if (groups[i] == name) return;
  295.         }
  296.         groups[i] = name;
  297.     }
  298.  
  299.  
  300.     // Find and declare all images used in Behaviors.
  301.      function DoFile(curBeh) {
  302.         var swapRow = curBeh.targetRowNum;
  303.         var swapCol = curBeh.targetColumnNum;
  304.         var swapFrame = curBeh.targetFrameNum; 
  305.         var fileName = slices[swapRow][swapCol].getFrameFileName(0);
  306.         if (swapFrame > 0) {
  307.             var frame = swapFrame + 1;
  308.             fileName = fileName + "_F" + frame;
  309.             slices[swapRow][swapCol].setFrameFileName(swapFrame, fileName);
  310.         } 
  311.     }
  312.     
  313.     // Examine all behaviors to determine what groups and actions are present. 
  314.     // Determine which files to pre-cache.
  315.     for (var curRow = 0; curRow < slices.numRows; curRow++) {
  316.         for (var curCol = 0; curCol < slices.numColumns; curCol++) {
  317.             var curSlice = slices[curRow][curCol];
  318.              curSlice.javaOver = "";
  319.             curSlice.javaOut = "";
  320.             curSlice.javaClick = "";
  321.             curSlice.gotJavascript = false;
  322.  
  323.             if (slices[curRow][curCol].skipCell) continue;
  324.                 i = i + exportDoc.numFrames;
  325.  
  326.             if (slices[curRow][curCol].behaviors.numberOfBehaviors > 0) {
  327.                 var behaviors = curSlice.behaviors;
  328.                 for (var i=0; i<behaviors.numberOfBehaviors; i++) {
  329.                     var curBehavior = behaviors[i];
  330.                     if (curBehavior.action == kActionSwapImage) {
  331.                         DoFile(curBehavior);
  332.                     }
  333.                     if (curBehavior.action == kActionRadioGroup) {
  334.                         AddGroup(curBehavior.groupName);
  335.                     }
  336.                     if (curBehavior.action == kActionStatusMessage) {
  337.                         hasStatusMessage=true;
  338.                     }
  339.                 }
  340.                 ProcessBehavior(behaviors, curSlice);
  341.             }
  342.             var imagemap = curSlice.imagemap;
  343.             for (var j=0; j < imagemap.numberOfURLs; j++) {
  344.                 var curImagemap = imagemap[j];
  345.                 var behaviors = curImagemap.behaviors;
  346.                 if (behaviors.numberOfBehaviors==0) {
  347.                     behaviors = curSlice.behaviors;
  348.                 }
  349.                 for (var i=0; i<behaviors.numberOfBehaviors; i++) {
  350.                     var curBehavior = behaviors[i];
  351.                     if (curBehavior.action == kActionSwapImage) {
  352.                         DoFile(curBehavior);
  353.                     }
  354.                     if (curBehavior.action == kActionRadioGroup) {
  355.                         AddGroup(curBehavior.groupName);
  356.                     }
  357.                     if (curBehavior.action == kActionStatusMessage) {
  358.                         hasStatusMessage=true;
  359.                     }
  360.                 }
  361.                 ProcessBehavior(behaviors, curImagemap);
  362.             }
  363.         }
  364.     }
  365.  
  366.     function WRITE_JS_FUNCTION(func) {
  367.         WRITE_HTML(func);
  368.     }
  369.  
  370. // Write comment for start of JavaScript copy/paste section.
  371. WRITE_HTML_COMMENT("------------------ BEGIN COPYING THE JAVASCRIPT SECTION HERE -----------------");
  372. WRITE_HTML("\n");
  373.  
  374. // Begin Script. Hide Script from non-javascript-enabled browsers.
  375. WRITE_HTML("<script language=\"JavaScript\">\n");
  376. WRITE_HTML("<!--hide this script from non-javascript-enabled browsers\n");
  377. WRITE_HTML("\n");
  378.  
  379. /*--------------------------  JavaScript functions used in the HTML -----------------*/
  380.     
  381. // Function MM_preloadImages pre-caches images.
  382. function MM_preloadImages(){ 
  383.     if (document.images) { 
  384.         var imgFiles = MM_preloadImages.arguments;
  385.         if (document.preloadArray==null) document.preloadArray = new Array();
  386.         var i = document.preloadArray.length;
  387.         with (document) for (var j=0; j<imgFiles.length; j++) if (imgFiles[j].charAt(0)!="#") {
  388.             document.preloadArray[i] = new Image;
  389.             document.preloadArray[i++].src = imgFiles[j];
  390.         }
  391.     }
  392. }
  393.  
  394. /* Function MM_displayStatusMsg executes status bar messages. */
  395. function MM_displayStatusMsg(msgStr)  {
  396.     status=msgStr;
  397.     document.MM_returnValue = true;
  398. }
  399.  
  400. /* Function MM_swapImage executes image swaps. */
  401. function MM_swapImage() { // 
  402.   var i,j=0,objStr,obj,swapArray=new Array,oldArray=document.MM_swapImgData;
  403.   for (i=0; i < (MM_swapImage.arguments.length-2); i+=3) {
  404.     objStr = MM_swapImage.arguments[(navigator.appName == 'Netscape')?i:i+1];
  405.     if ((objStr.indexOf('document.layers[')==0 && document.layers==null) ||
  406.         (objStr.indexOf('document.all[')   ==0 && document.all   ==null))
  407.       objStr = 'document'+objStr.substring(objStr.lastIndexOf('.'),objStr.length);
  408.     obj = eval(objStr);
  409.     if (obj != null) {
  410.       swapArray[j++] = obj;
  411.       swapArray[j++] = (oldArray==null || oldArray[j-1]!=obj)?obj.src:oldArray[j];
  412.       obj.src = MM_swapImage.arguments[i+2];
  413.   } }
  414.   document.MM_swapImgData = swapArray; //used for restore
  415. }
  416.  
  417. // Function MM_swapImgRestore restores swapped images to their original states.
  418. function MM_swapImgRestore() { //v1.2
  419.   if (document.MM_swapImgData != null)
  420.     for (var i=0; i<(document.MM_swapImgData.length-1); i+=2)
  421.      document.MM_swapImgData[i].src = document.MM_swapImgData[i+1];
  422. }
  423.  
  424. /* Function setCookie creates a browser cookie for tracking and setting button states. */  
  425. function setCookie(name, value) {
  426.    document.cookie = name + "=" + escape(value)
  427. }
  428.  
  429. /* Function getCookie reads a browser cookie for setting button states. */  
  430. function getCookie(Name) {
  431.    var search = Name + "="
  432.    var retVal = "";
  433.    if (document.cookie.length > 0) { // if there are any cookies
  434.      offset = document.cookie.indexOf(search);
  435.      if (offset != -1) { // if cookie exists 
  436.          // set index of beginning of value
  437.          end = document.cookie.indexOf(";", offset) 
  438.          // set index of end of cookie value
  439.          offset += search.length 
  440.          if (end == -1) 
  441.             end = document.cookie.length;
  442.          retVal = unescape(document.cookie.substring(offset, end)) ;
  443.      } 
  444.    }
  445.    return(retVal);
  446. }
  447.  
  448. /* Function FWFindImage locates an image which may be in a CSS layer. This allows the user
  449.    to move images between layers in an html editor without breaking behaviors. */
  450. function FWFindImage(doc, name, j){
  451.     var theImage=false;
  452.     if (doc.images) {
  453.         theImage = doc.images[name];
  454.     }
  455.     if (theImage) return theImage;
  456.     if (doc.layers) {
  457.         for (j=0; j<doc.layers.length; j++) {
  458.             theImage = FWFindImage(doc.layers[j].document, name, 0);
  459.             if (theImage) return(theImage);
  460.         }
  461.     }
  462.     return(false);
  463. }
  464.  
  465. /* Function InitGrp checks for a cookie for the current toggle group and uses that information
  466.    to set the current down button state. */  
  467. function InitGrp(grp) {
  468.     var cmd = false; 
  469.     if (getCookie) cmd = getCookie(grp);
  470.     if (cmd) {
  471.         eval("GrpDown("+cmd+")");
  472.         eval("GrpRestore("+cmd+")");
  473.     }
  474. }
  475.  
  476. /* Function FindGroup locates toggle group information in the current document and
  477.    creates it if it has not already been declared. */
  478. function FindGroup(grp, imageName) {
  479.     var img = FWFindImage(document, imageName, 0);
  480.     if (!img) return(false);
  481.     var docGroup = eval("document.FWG_"+grp);
  482.     if (!docGroup) {
  483.         docGroup = new Object;
  484.         eval("document.FWG_"+grp+" = docGroup");
  485.         docGroup.theImages = new Array;
  486.     }
  487.     if (img) {
  488.         var i;
  489.         for (i=0; i<docGroup.theImages.length; i++) {
  490.             if (docGroup.theImages[i] == img) break;
  491.         }
  492.         docGroup.theImages[i] = img; 
  493.         if (!img.atRestSrc) {
  494.             img.atRestSrc = img.src;
  495.             img.initialSrc = img.src;
  496.         }
  497.     }
  498.     return(docGroup);
  499. }
  500.  
  501. /* Function GrpDown sets appropriate image to the down state. */
  502. function GrpDown(grp){
  503.     var i,j=0,downSrc,downOver,objName;
  504.     var cmd = "'" + grp + "'";
  505.     var docGroup=false;
  506.     for (i=1; i < (GrpDown.arguments.length-2); i+=3) {
  507.         objName = GrpDown.arguments[i];
  508.         downSrc = GrpDown.arguments[i+1];
  509.         downOver = GrpDown.arguments[i+2];
  510.         if(!downOver) downOver = downSrc;
  511.         var docGroup = FindGroup(grp, objName);
  512.         if (!docGroup || !downSrc) continue;
  513.         obj = FWFindImage(document,objName,0);
  514.         if (!obj) continue;
  515.         obj.atRestSrc = downSrc; obj.downOver = downOver;
  516.         obj.src = downOver; obj.isDown = true;
  517.         obj.skipMe = true;
  518.         cmd += ",'" + objName + "','" + downSrc + "','" + downOver + "'";
  519.         j++;
  520.     }
  521.     setCookie(grp, cmd);
  522.     if (!docGroup) return;
  523.     var theImages = docGroup.theImages;
  524.     if (theImages) {
  525.         for (i=0; i<theImages.length; i++) {
  526.             var curImg = theImages[i];
  527.             if (curImg && !curImg.skipMe) {
  528.                 curImg.atRestSrc = curImg.initialSrc;
  529.                 curImg.isDown = false; curImg.downOver = false;
  530.                 curImg.src = curImg.initialSrc;
  531.             }
  532.             curImg.skipMe = false;
  533.         }
  534.     }
  535. }
  536.  
  537. /* Function GrpSwap swaps one or more images and restores all other images in the group
  538.    to their default state. */
  539. function GrpSwap(grp){
  540.     var i,j=0,newSrc,objName;
  541.     var docGroup = false;
  542.     for (i=1; i < (GrpSwap.arguments.length-1); i+=2) {
  543.         objName = GrpSwap.arguments[i];
  544.         newSrc = GrpSwap.arguments[i+1];
  545.         docGroup = FindGroup(grp, objName);
  546.         if (!docGroup) continue;
  547.         obj = FWFindImage(document,objName,0);
  548.         if (!obj) continue;
  549.         if (obj.isDown) {
  550.             if (obj.downOver) { 
  551.                 obj.src = obj.downOver;
  552.             }
  553.         } else {
  554.             obj.src = newSrc;
  555.             obj.atRestSrc = obj.initialSrc;
  556.         }
  557.         obj.skipMe = true;
  558.         j++;
  559.     }
  560.     if (!docGroup) return;
  561.     theImages = docGroup.theImages;
  562.     if (theImages) {
  563.         for (i=0; i<theImages.length; i++) {
  564.             var curImg = theImages[i];
  565.             if (curImg.atRestSrc && !curImg.skipMe) {
  566.                 curImg.src = curImg.atRestSrc;
  567.             }
  568.             curImg.skipMe = false;
  569.         }
  570.     }
  571. }
  572.  
  573. /* Function GrpRestore sets all images in the group to their default states. */
  574. function GrpRestore(grp){
  575.     var docGroup = eval("document.FWG_"+grp);if (!docGroup) return;
  576.     theImages = docGroup.theImages;
  577.     if (theImages) {
  578.         for (i=0; i<theImages.length; i++) {
  579.             var curImg = theImages[i];
  580.             if (curImg.atRestSrc) {
  581.                 curImg.src = curImg.atRestSrc;
  582.             }
  583.         }
  584.     }
  585. }
  586.  
  587. /*----------------- END JavaScript functions used in the HTML -----------------*/
  588.  
  589. // Write out only the JavaScript functions needed for the HTML.
  590.  
  591.     /* Write function MM_preloadImages if document includes images 
  592.     that must be pre-cached. */
  593.     if (onLoadPreloads != "") {
  594.         WRITE_JS_FUNCTION(MM_preloadImages);
  595.     }
  596.     
  597.     // Write function MM_displayStatusMsg if document includes status bar messages.
  598.     if (hasStatusMessage) {    
  599.         WRITE_JS_FUNCTION(MM_displayStatusMsg);
  600.     }
  601.     
  602.     // Write function MM_swapImage if document includes swap image behaviors.
  603.     if (hasSwap) {
  604.         WRITE_JS_FUNCTION(MM_swapImage);
  605.     // Write function MM_swapImgRestore to restore swapped images.
  606.         WRITE_JS_FUNCTION(MM_swapImgRestore);
  607.     }
  608.     
  609.     // Write the following functions for toggle group behaviors and tracking.
  610.     if (hasDownGroup) {
  611.         WRITE_JS_FUNCTION(GrpDown);
  612.         WRITE_JS_FUNCTION(setCookie);
  613.         WRITE_JS_FUNCTION(getCookie);
  614.         WRITE_JS_FUNCTION(InitGrp);
  615.     }
  616.     
  617.     if (hasGroup) {
  618.          WRITE_JS_FUNCTION(GrpSwap);
  619.     }
  620.     
  621.     if (hasGroup || hasDownGroup) {
  622.         WRITE_JS_FUNCTION(FWFindImage);
  623.         WRITE_JS_FUNCTION(FindGroup);
  624.         WRITE_JS_FUNCTION(GrpRestore);
  625.     }
  626.     
  627. // Stop hiding script from non-javascript-enabled browsers. End script.
  628. WRITE_HTML("// stop hiding -->\n");      
  629. WRITE_HTML("</script>\n");
  630. WRITE_HTML("\n");    
  631.           
  632. // End JavaScript copy/paste section.
  633. WRITE_HTML_COMMENT("------------------------ STOP COPYING THE JAVASCRIPT HERE ------------------------");
  634. WRITE_HTML("\n");
  635.  
  636. // Close head tag.
  637. WRITE_HTML("</head>\n");      
  638. WRITE_HTML("\n");
  639.  
  640. // Begin body tag. Set background color to Fireworks document canvas color.
  641. WRITE_HTML("<body bgcolor=\"#", exportDoc.backgroundColor.toString(16), "\"");
  642.  
  643. // Write onLoad function to initialize toggle group.
  644. if (onLoadPreloads != "" || groups.length>0) {
  645.     WRITE_HTML(" onLoad=\"" + onLoadPreloads);
  646.  
  647.         if (hasDownGroup) {
  648.             for (i = 0; i<groups.length; i++) {
  649.                 WRITE_HTML("InitGrp('" + groups[i] + "');");
  650.             }    
  651.         }    
  652.         WRITE_HTML("\"");    // close the onload tag.
  653.     }
  654.     WRITE_HTML(">\n");    // close the body tag.
  655.     WRITE_HTML("\n");
  656.  
  657. // Write comment for start of table copy/paste section.
  658. WRITE_HTML_COMMENT("The following section is an HTML table which reassembles the sliced image in a browser.");
  659. WRITE_HTML_COMMENT("Copy the table section including the opening and closing table tags, and paste the data where");
  660. WRITE_HTML_COMMENT("you want the reassembled image to appear in the destination document. ");
  661. WRITE_HTML("\n");
  662. WRITE_HTML_COMMENT("------------------------ BEGIN COPYING THE TABLE HERE --------------------------");
  663. WRITE_HTML("\n");
  664.  
  665. WRITE_HTML_COMMENT(" Image with table ");
  666. WRITE_HTML("\n");
  667.  
  668.     // Begin table.
  669.     WRITE_HTML( "<table ");
  670.  
  671.     // If the Fireworks document's canvas is not transparent and the Include undefined slices checkbox
  672.     // is off, give the table a background color based on the FIreworks document's canvas color.
  673.     if (!exportDoc.backgroundIsTransparent && slices.doSkipUndefined) {
  674.         WRITE_HTML("bgcolor=\"#", exportDoc.backgroundColor, "\"");
  675.     } 
  676.     WRITE_HTML("border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"",
  677.         exportDoc.width, "\">\n");
  678.     WRITE_HTML("\n");
  679.  
  680.     var v = 0;
  681.     var curCol;
  682.     var curRow;
  683.     var downIndex = 0;
  684.  
  685.     // If shims have been specified, write shim row.    
  686.     if (slices.doShimEdges) {
  687.         WRITE_HTML("  <tr><!-- spacing row, 1 height. -->\n");
  688.         for (curCol = 0; curCol < slices.numColumns; curCol++) {
  689.             WRITE_HTML("   <td><img name=\"FwShim_Col_", curCol, "\" src=\"", 
  690.                 slices.shimPath, "\" width=\"", 
  691.                 slices[0][curCol].cellWidth, "\" height=\"1\" border=\"0\"></td>\n"); 
  692.         }
  693.         WRITE_HTML("  </tr>\n");
  694.         WRITE_HTML("\n");
  695.     }
  696.  
  697.     // Write table rows.
  698.     for (curRow = 0; curRow < slices.numRows; curRow++) {
  699.         var curSlice; 
  700.         WRITE_HTML("  <tr><!-- row ", curRow+1," -->\n");
  701.         for (curCol = 0; curCol < slices.numColumns; curCol++) {
  702.             curSlice = slices[curRow][curCol];
  703.             if (curSlice.skipCell) continue; 
  704.  
  705.             // Write rowspan and colspan if necessary. Ex: rowspan="1" colspan="3"
  706.             WRITE_HTML("   <td");
  707.             if (curSlice.rowSpan > 1) {
  708.                 WRITE_HTML(" rowspan=\"", curSlice.rowSpan,"\"");
  709.             }
  710.             if (curSlice.columnSpan>1) {
  711.                 WRITE_HTML(" colspan=\"", curSlice.columnSpan, "\"");
  712.             }
  713.             WRITE_HTML(">");
  714.              var imageName = curSlice.getFrameFileName(0);
  715.  
  716.             // Write HTML text from slices set to "Text (No Image)"
  717.             if (!curSlice.hasImage) {
  718.                 // no image, just dump out html text.
  719.                 WRITE_HTML(curSlice.htmlText, "</td>\n");
  720.                 continue;
  721.             }
  722.  
  723.              // If current slice is not defined by a slice object and Export Undefined
  724.             // Slices is not checked, don't output an image and if Shims are specified 
  725.             // place a shim image in the current cell.
  726.             if (curSlice.isUndefined && slices.doSkipUndefined) {
  727.                 // Cur slice has no slice object, and skip undefined is on.
  728.                 if (slices.doShimInternal || slices.doShimEdges) {
  729.                     // WRITE_HTML out a shim image. 
  730.                     WRITE_HTML("<img src=\"",
  731.                         slices.shimPath, "\" width=\"", curSlice.width, "\" height=\"", 
  732.                         curSlice.height, "\" border=\"0\">"); 
  733.                 }
  734.                 WRITE_HTML("</td>\n");
  735.                 // Tell Fireworks to not write the image file. Setting the filename to "" forces 
  736.                 // Fireworks to not generate the image.
  737.                 var q;
  738.                 for (q=0; q<exportDoc.numFrames; q++) {
  739.                     curSlice.setFrameFileName(q, "");
  740.                 }    
  741.                 continue;
  742.             }
  743.  
  744.             // Write link if slice has URL attached.
  745.             var href = "href=\"#\"";
  746.             var hasHref = slices.hasHref;
  747.             var abortHref = false;
  748.             var suffix = "";
  749.             
  750.             var hasHref = curSlice.hasHref;
  751.             var abortHref = false;
  752.             var suffix = "";
  753.             if (curSlice.hasHref) {
  754.                 href = "href=\"";
  755.                 href += curSlice.href;
  756.                 href += "\"";
  757.                 if (curSlice.hasTargetText) {
  758.                     href += " target=\"";
  759.                     href += curSlice.targetText;
  760.                     href += "\"";
  761.                 }
  762.             }
  763.  
  764.             // If exporting demo HTML, ignore the URL and replace with none.
  765.             if (slices.doDemoHTML && curSlice.getFrameFileName(2)) {
  766.                 // no href.
  767.                 hasHref = false;
  768.                 href = "href= \"#\"";
  769.             }
  770.             
  771.             var cellName = CellName(curRow,curCol); 
  772.             var anchorTagOpen = false;
  773.             
  774.             var behaviors = slices[curRow][curCol].behaviors;
  775.             var javaOver = curSlice.javaOver;
  776.             var javaOut = curSlice.javaOut;
  777.             var javaClick = curSlice.javaClick;
  778.             var gotJavascript = curSlice.gotJavascript;
  779.             if (curSlice.hasImagemap) gotJavascript = false; // is applied to the imagemap.
  780.  
  781.             // Write rollover and swap image events.
  782.             if ( gotJavascript || slices[curRow][curCol].hasHref) {
  783.                 /* Write out href and over etc. */
  784.                   WRITE_HTML("<a ");
  785.                 anchorTagOpen = true;
  786.                 WRITE_HTML(href);
  787.  
  788.                 if (javaOut != "") {
  789.                     WRITE_HTML(" onMouseOut=\"", javaOut, "\" ");
  790.                 }
  791.                 if (javaOver != "") {
  792.                     WRITE_HTML(" onMouseOver=\"", javaOver, "\" ");
  793.                 }
  794.                 if (javaClick != "") {
  795.                     WRITE_HTML(" onClick=\"", javaClick, "\" ");
  796.                 }
  797.                 WRITE_HTML(">");
  798.             }
  799.             
  800.             // Place image.
  801.             if (curSlice.hasImage) {
  802.                 var altText = "";
  803.                 if (curSlice.hasAltText) {
  804.                     altText = curSlice.altText;
  805.                 } else {
  806.                     altText = exportDoc.altText;
  807.                 }
  808.                 
  809.                 // Assemble info for image tag.
  810.                 // Ex: <img src="File_03_02.gif" name="N_03_02" width="79" height="71" border="0"
  811.                 WRITE_HTML("<img  src=\"",                    
  812.                     slices.imagesDirPath, imageName, suffix, curSlice.imageSuffix, "\" name=\"",  cellName, "\" width=\"",curSlice.width,"\" height=\"", curSlice.height, "\" border=\"0\"");
  813.                 
  814.                 // Write image map name.
  815.                 // Ex: usemap="#base_r1_c2"                
  816.                 if (curSlice.hasImagemap) {
  817.                     WRITE_HTML(" usemap=\"#",imageName,"\""); 
  818.                 }
  819.                 
  820.                 // Write alt text.
  821.                 if (altText != "") {
  822.                     WRITE_HTML(" alt=\"", altText, "\"");
  823.                 }
  824.                 WRITE_HTML(">");    
  825.             }
  826.             
  827.             if (anchorTagOpen) {
  828.                 WRITE_HTML("</a>");    
  829.             }
  830.             WRITE_HTML("</td>\n");    
  831.         } 
  832.         
  833.         // Place shim in rightmost column of table.
  834.         if (slices.doShimEdges) {
  835.             /* Write the 1 pixel transparent shim. */
  836.             WRITE_HTML("   <td><img name=\"FwShim_Row_", curRow, "\" src=\"",
  837.                 slices.shimPath, "\" width=\"1\" height=\"", 
  838.                 curSlice.cellHeight, "\" border=\"0\"></td>\n"); 
  839.         }
  840.         WRITE_HTML("  </tr>\n");
  841.         WRITE_HTML("\n");
  842.     }        
  843.  
  844.     // Close table.
  845.     WRITE_HTML("</table>\n");
  846.     WRITE_HTML("\n");
  847.     
  848.     // Traverse all slices and generate any image maps needed.
  849.     for (curRow = 0; curRow < slices.numRows; curRow++) {
  850.         for (curCol = 0; curCol < slices.numColumns; curCol++) {
  851.             var curSlice = slices[curRow][curCol];
  852.             if (curSlice.skipCell)
  853.                 continue; 
  854.             if (curSlice.hasImagemap) {
  855.             
  856.                 // Write the image map.
  857.                 var imageName = curSlice.getFrameFileName(0);
  858.                 WRITE_HTML("<map name=\"", imageName, "\">\n");
  859.                 
  860.                 var i = 0;
  861.                 while (i < curSlice.imagemap.numberOfURLs) {
  862.                     var curImagemap = curSlice.imagemap[i];
  863.  
  864.                     var behaviors = curImagemap.behaviors;
  865.  
  866.                     if (behaviors.numberOfBehaviors==0) {
  867.                         behaviors = curSlice.behaviors;
  868.                     }
  869.                      var javaOver = curImagemap.javaOver;
  870.                     var javaOut = curImagemap.javaOut;
  871.                     var javaClick = curImagemap.javaClick;
  872.                     var gotJavascript = curImagemap.gotJavascript;
  873.     
  874.                     // Write the area tag with shape definitions.
  875.                     WRITE_HTML("<area shape=\"");
  876.                     WRITE_HTML(curImagemap.shape); // Shapes are rect poly and circle
  877.                     WRITE_HTML("\" coords=\"");
  878.                     for (var j=0; j<curImagemap.numCoords; j++) {
  879.                         if (j>0) WRITE_HTML(",");
  880.                         // polygon has n coords.
  881.                         // rect has 2 coords, topLeft, and botomRight.
  882.                         // Circle has one coord, center; plus radius.
  883.                         WRITE_HTML((curImagemap.xCoord(j)-curSlice.left), ",", (curImagemap.yCoord(j)-curSlice.top)); 
  884.                     }
  885.                     if (curImagemap.shape == "circle") {
  886.                         // Write the radius for circle hotspots.
  887.                         WRITE_HTML(", ", curImagemap.radius);
  888.                     }
  889.                     WRITE_HTML("\"");
  890.                     var href = " href=\"#\"";
  891.                     if (curImagemap.hasHref) {
  892.                         href = " href=\"";
  893.                         href += curImagemap.href;
  894.                         href += "\"";
  895.                         if (curImagemap.hasTargetText) {
  896.                             href += " target=\"";
  897.                             href += curImagemap.targetText;
  898.                             href += "\"";
  899.                         }
  900.                     }
  901.  
  902.                     WRITE_HTML(href);
  903.  
  904.                     // Write alt text for hotspot.
  905.                      var altText = "";
  906.                     if (curImagemap.hasAltText) {
  907.                         altText = curImagemap.altText;
  908.                     } else {
  909.                         altText = exportDoc.altText;
  910.                     }
  911.  
  912.                     if (altText!="") {
  913.                         WRITE_HTML(" title=\"", altText, "\"");
  914.                         WRITE_HTML(" alt=\"", altText, "\"");
  915.                     }
  916.  
  917.                     // Write rollover and swap image behaviors.
  918.                     if (javaOut != "") {
  919.                         WRITE_HTML(" onMouseOut=\"", javaOut, "\"");
  920.                     }
  921.                     if (javaOver != "") {
  922.                         WRITE_HTML(" onMouseOver=\"", javaOver, "\"");
  923.                     }
  924.                     if (javaClick != "") {
  925.                         WRITE_HTML(" onClick=\"", javaClick, "\"");
  926.                     }
  927.  
  928.                     WRITE_HTML(">\n");
  929.                     i++;
  930.                 } 
  931.                 behaviors = curSlice.behaviors;
  932.                  var javaOver = curSlice.javaOver;
  933.                 var javaOut = curSlice.javaOut;
  934.                 var javaClick = curSlice.javaClick;
  935.                 var gotJavascript = curSlice.gotJavascript;
  936.                 
  937.                 // If the current slice had a URL attached, it was moved and written here.
  938.                 if (gotJavascript || curSlice.hasHref) {
  939.                     WRITE_HTML("<area shape=\"rect\" coords=\"0,0, ", curSlice.width, ",", curSlice.height, "\" ");
  940.                     var href="#";
  941.                     if (curSlice.hasHref) {
  942.                         href = curSlice.href;
  943.                     }
  944.                     WRITE_HTML("href=\"", href, "\"");
  945.  
  946.                     if (curSlice.hasTargetText) {
  947.                         WRITE_HTML("\n  target=\"", curSlice.targetText, "\"");
  948.                     }
  949.                     if (javaOut != "") {
  950.                         WRITE_HTML(" onMouseOut=\"", javaOut, "\" ");
  951.                     }
  952.                     if (javaOver != "") {
  953.                         WRITE_HTML(" onMouseOver=\"", javaOver, "\"");
  954.                     }
  955.                     if (javaClick != "") {
  956.                         WRITE_HTML(" onClick=\"", javaClick, "\"");
  957.                     }
  958.                     var altText = "";
  959.                     if (curSlice.hasAltText) {
  960.                         altText = curSlice.altText;
  961.                     } else {
  962.                         altText = exportDoc.altText;
  963.                     }
  964.                     if (altText!="") {
  965.                         WRITE_HTML(" title=\"", altText, "\"");
  966.                         WRITE_HTML(" alt=\"", altText, "\"");
  967.                     }
  968.                     WRITE_HTML(">\n");
  969.                 }    
  970.                 WRITE_HTML("</map>\n");
  971.                 WRITE_HTML("\n");
  972.             }
  973.         }
  974.     }
  975.  
  976. WRITE_HTML("\n");
  977.  
  978. // End table copy/paste section.
  979. WRITE_HTML_COMMENT("   This table was automatically created with Macromedia Fireworks 2.0   ");
  980. WRITE_HTML_COMMENT("   http://www.macromedia.com   ");
  981. WRITE_HTML("\n");
  982.  
  983. WRITE_HTML_COMMENT("------------------------- STOP COPYING THE TABLE HERE -------------------------");
  984.  
  985. WRITE_HTML("\n");
  986. WRITE_HTML("</body>\n");
  987.  
  988. WRITE_HTML("\n");
  989. WRITE_HTML("</html>\n");
  990. WRITE_HTML("\n");
  991.